It is common practice in computerized networks to store data in a temporary storage location in order to reduce a need to retrieve the same data from a remote location in the future. The temporary storage location is commonly referred to as a cache. In general a cache has a finite size. Therefore, a number of cache management techniques have been developed in an attempt to allocate the limited storage space in the cache among a large number of diverse requests and responses.
For example, in a video server environment, some video objects (e.g., movies) are very large and are read sequentially. This makes caching of the entire object inefficient. In caching video movies, a technique called head caching, in which a first portion of each object is stored, is often employed. Implementation of head caching means that a first portion of a video object is retained in a local cache. A request for the object results in streaming of data from the local cache to the requesting device with concurrent retrieval of the remainder of the object from its remote source.
An additional caching algorithm, referred to as interval caching, is employed to handle concurrent requests from similar devices for a same content resource. In interval caching, the sequential relationship of data blocks is exploited and the interval defined by multiple successive streams of the same content is cached (“A Generalized Interval Caching Policy for Mixed Interactive”, A. Dan, D. Sitaram (1996) http://citeseer.ist.psu.edu/cachedpage/164940/1; the disclosure of which is fully incorporated herein by reference). The set of data blocks between a first and last block currently being accessed by one of the streams is termed the “access interval”.
In cases where requests for the same content are received over a period of time, “ . . . it is preferable to retain the cached content over a relatively long time period.” (Proxy Caching for Media Streaming Over the Internet”—a survey, J. Liu, J. Xu, http://www.cs.sfu.ca/˜jcliu/Papers/comm04.pdf; the disclosure of which is fully incorporated herein by reference). However, the effectiveness of Interval Caching “ . . . diminishes with increased access intervals. If the access interval of the same object is longer than the duration of the playback, the algorithm is degenerated to the unaffordable full-object caching.” (J. Liu, J. Xu; Ibid.). For software updates to multiple devices of the same type which are served new software from a central site, this becomes a significant problem as software upgrade operations are not executed at the same precise time.
In general, the more content retained in a cache, the greater the memory requirements of the cache. However, since a single cache is often employed for more than one file and/or object and/or task, decreasing storage time can compensate to some degree for decreasing storage volume in reducing a required cache size.
Attempts to optimize the use of cache resources can result in increased complexity of the caching algorithm (see for example “Resource Based Caching for Web Servers” http://www.cs.utexas.edu/users/vin/pub/pdf/mmcn98rbc.pdf; the disclosure of which is fully incorporated herein by reference)
U.S. Pat. No. 5,787,472 relates to a disk caching system for selectively providing interval caching or segment caching of video data. The specification of this patent is fully incorporated herein by reference.
U.S. Pat. Nos. 6,834,329; 6,754,699 and 6,742,019 relate to caching technology and are cited here as being indicative of the general level of the art. The specifications of these patents are fully incorporated herein by reference.